home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - $%c5901 < prev    next >
Encoding:
Text File  |  2019-04-13  |  5.0 KB  |  72 lines

  1. ║CM:MSD - $┼901
  2. ║LM21:RM70:PP66:PG60
  3. ║P#102
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $┼901           ╙ET POINTER TO ROUTINE WHICH HANDLES COMMUNICATION OVER THE ╔┼┼┼ BUS.
  7. $┼90┬           ╙ET POINTER TO ROUTINE WHICH HANDLES COMMUNICATION OVER THE SERIAL BUS.
  8. $┼915           ╩╙╥ ╙┼╘─╠┬ [$╞┼├├] TO SET THE TALK DELAY BYTE TO $0─ FOR TALKING OVER THE SERIAL BUS TO A ├64.
  9. $┼918           ╩╙╥ ├╬╘╔╬╘ [$╞271] TO INITIALIZE THE DISK CONTROLLER.
  10. $┼91┬           ╙ET ╓╬═╔ [$4├31/$4├32] TO $81/$┼8 [$┼881], THE START OF THE ╬═╔ INTERRUPT ROUTINE.
  11. $┼925           ╙ET ╙┼├╔╬├ [$4├35], THE NORMAL SECTOR INCREMENT, TO $0┴.
  12. $┼92┴           ╙ET ╥┼╓├╬╘ [$4├36], THE NORMAL RECOVERY COUNTER, TO $05.
  13. $┼92╞           ╙ET .┴ TO $73 (═.╙.─. ─╧╙ ╓2.3) AND ╩╙╥      ┼╥╥╘╙0 [$┼732] TO SET UP THE POWER ON MESSAGE.
  14. $┼934           ╘URN DRIVE 0 ON AND DRIVE 1 OFF.
  15. $┼938           ╩╙╥ ═╧╓╚─1 [$╞700] TO MOVE HEAD TO TRACK 1.  ╔F .┴ IS ZERO UPON RETURN, BRANCH TO ─╙╦╔╬3.
  16. $┼93─           ╘URN OFF DRIVE 0, SET .╪ TO $06 AND JUMP TO      ╨┼┌╥╪ [$┼7╞9] TO FLASH ╠┼─'S 7 TIMES.
  17. $┼944  ─╙╦╔╬3   ╙ET .┴ TO $28 AND POSITION TO THIS TRACK WITH A ╩╙╥ ═╧╓╚┼─ [$╞693].
  18. $┼949           ╩╙╥ ╠┼─╧╞╞ [$├018] TO TURN OFF THE DRIVE ╠┼─S.
  19. $┼94├           ╔F ─╒┴╠╞╠ [$┬7] IS ZERO (A SINGLE DRIVE), THEN BRANCH TO ─╙╦╔╬5 TO CONTINUE.
  20. $┼950           ╘URN DRIVE 0 OFF AND DRIVE 1 ON.
  21. $┼954           ╙ET ─╥╔╓┼ [$┬0] TO 1.
  22. $┼95┴           ╩╙╥ ═╧╓╚─1 [$╞700] TO MOVE HEAD TO TRACK 1.  ╔F .┴ IS ZERO UPON RETURN, BRANCH TO ─╙╦╔╬4.
  23. $┼95╞           ╔NDICATE THIS IS A SINGLE DRIVE SYSTEM BY SETTING ─╒┴╠╞╠ [$┬7] TO ZERO AND BRANCHING TO ─╙╦╔╬5.
  24. $┼965  ─╙╦╔╬4   ╙ET .┴ TO $28 AND POSITION TO THIS TRACK WITH A ╩╙╥ ═╧╓╚┼─ [$╞693].
  25. $┼96┴           ╩╙╥ ╠┼─╧╞╞ [$├018] TO TURN OFF THE DRIVE ╠┼─S.
  26. $┼96─  ─╙╦╔╬5   ╘URN OFF DRIVE 0 AND 1.
  27.  
  28.  
  29.  
  30.        ╔─╠┼     ╔DLE LOOP - WAIT FOR SOME ACTION
  31.  
  32. $┼971           ─ISABLE INTERRUPTS, SET STACK POINTER TO $╞╞, AND ENABLE INTERRUPTS.
  33. $┼976           ╙ET ├╠╦╧╒╘, ─┴╘╧╒╘, ├╠╦╔╬, AND ─┴╘╔╬ LINES HIGH IN PORTS ├ AND ┴RESPECTIVELY.
  34. $┼97┼           ├LEAR LINE 3 OF PORT ├ TO ACTIVATE THE SERIAL BUS FOR ╔/╧ AND THE ╔┼┼┼ BUS FOR INPUT.
  35. $┼980           ├LEAR ┴╘╬┴├╦ LINE 1 ON PORT ┴.
  36. $┼982           ╔F ├═─╫┴╘ [$4┼2┴] IS ZERO THERE IS NO COMMAND WAITING SO BRANCH TO ╔─╠1.
  37. $┼987           ╙ET ├═─╫┴╘ [$4┼2┴] AND ╬═╔╞╠╟ [$4├33] TO ZERO.
  38. $┼98╞           ╩╙╥ ╨┴╥╙╪╤ [$├082] TO PARSE AND THEN EXECUTE THE COMMAND.
  39. $┼992  ╔─╠1     ┼NABLE INTERRUPTS.
  40. $┼993           ╔F ┴╘╬ LINE FOR ╔┼┼┼ BUS ON PORT ┴ IS CLEAR THEN BRANCH TO ╔─╠1┴ TO SEE IF ANYTHING IS HAPPENING ON THE SERIAL BUS.
  41. $┼998           ╨ERFORM AN INDIRECT JUMP TO (╓┴╘╬╔) [($4├╞2)] TO HANDLE ╔┼┼┼ BUS ACTIVITY.
  42. ║FP0
  43. $┼99┬  ╔─╠1┴    ╔F ┴╘╬ LINE FOR SERIAL BUS ON PORT ┴ IS CLEAR THEN BRANCH TO ╔─╠01.
  44. $┼9┴0           ╨ERFORM AN INDIRECT JUMP TO (╙┼╥╓┼├) [($4├╞4)] TO HANDLE SERIAL BUS ACTIVITY.
  45. $┼9┴3  ╔─╠01    ┼NABLE INTERRUPTS.
  46. $┼9┴4           ├LEAR ╘1 [$49] AND ╘2 [$4┴].
  47. $┼9┴┴           ╙ET ╘0 [$48] TO $0┼.  ╘HIS IS A TEMPORARY STORAGE AREA FOR THE SECONDARY ADDRESS.
  48. $┼9┴┼  ╔─╠02    ╟ET SECONDARY ADDRESS FROM ╘0 [$48] INTO .╪.
  49. $┼9┬0           ╔F ╠╔╬╘┴┬,╪ [$4├8┴,╪] IS $╞╞ THEN NO FILE IS ACTIVE FOR THIS SECONDARY ADDRESS SO BRANCH TO ╔─╠3.
  50. $┼9┬7           ┴ FILE IS ACTIVE.  ┴╬─ THE ╠╔╬╘┴┬ VALUE WITH $3╞ TO GET THE CHANNEL NUMBER AND SAVE IT IN      ╠╔╬─╪ [$57].
  51. $┼9┬┬           ╩╙╥ ╟┼╘┴├╘ [$──5╞] TO OBTAIN THE ACTIVE BUFFER NUMBER.
  52. $┼9┬┼           ╧BTAIN THE ╠╙╘╩╧┬,╪ [$4├┬├,╪] FOR THIS BUFFER.
  53. $┼9├2           ╩╙╥ ├╬╘┴├╘ [$┼┴13] TO INCREMENT THE NUMBER OF FILES ACTIVE ON THIS DRIVE.
  54. $┼9├5  ╔─╠3     ─ECREMENT ╘0 [$48] AND IF THERE ARE MORE ADDRESSES TO CHECK THEN BRANCH BACK TO ╔─╠02.
  55. $┼9├9           ╠OAD .┘ WITH $0┬ TO CHECK THE JOB QUEUE FOR ACTIVE JOBS.
  56. $┼9├┬  ╔─╠4     ╧BTAIN THE JOB CODE FROM ╩╧┬╙,┘ [$4├00,┘] AND IF IT IS POSITIVE THEN NO JOB IS PENDING SO BRANCH TO ╔─╠5.
  57. $┼9─0           ╩╙╥ ├╬╘┴├╘ [$┼┴13] TO INCREMENT ACTIVE FILES FOR THE PROPER DRIVE.
  58. $┼9─3  ╔─╠5     ─ECREMENT THE JOB QUEUE INDEX AND CHECK THE NEXT ITEM IN THE JOB QUEUE BY BRANCHING BACK TO ╔─╠4 IF .┘ IS POSITIVE.
  59. $┼9─6           ╙AVE ─╥╓╬╒═ [$54] ON THE STACK.
  60. $┼9─9           ╙ET .╪ TO $00 AND ╩╙╥ ├╚╦╫╨╙ [$┼┴19] TO SEE IF THE WRITE PROTECT STATUS HAS CHANGED FOR DRIVE 0.
  61. $┼9─┼           ╙ET .╪ TO $01 AND ╩╙╥ ├╚╦╫╨╙ [$┼┴19] TO SEE IF THE WRITE PROTECT STATUS HAS CHANGED FOR DRIVE 1.
  62. $┼9┼3           ╥ESTORE THE ORIGINAL DRIVE NUMBER FROM THE STACK.
  63. $┼9┼6           ╠OAD .╪ FROM ┼╥├╘─╬ [$4┼2─] AND IF IT IS ZERO, THE ╠┼─ IS NOT FLASHING IN ERROR SO BRANCH TO ╔─╠12.
  64. $┼9┼┬           ╔F BIT 7 OF THE TIMER IS SET, WE ARE STILL WAITING SO BRANCH TO ╔─╠11┴.
  65. $┼9┼╞           ╙ET THE TIMER TO $┴0 TO START A NEW 8 MILLISECOND CYCLE.
  66. $┼9╞3           ─ECREMENT ┼╥├╘─╬ [$4┼2─] AND BRANCH TO ╔─╠11┴ IF THE COUNT IS NOT YET ZERO.
  67. $┼9╞8           ╙ET ┼╥├╘─╬ [$4┼2─] TO $10 TO START A NEW TIMING CYCLE.
  68. $┼9╞─           ╔NVERT THE ┼╥╠┼─ [$4├╞0] SWITCH.
  69. $┼┴05  ╔─╠11┴   ╙AVE THE ┼╥╠┼─ [$4├╞0] SWITCH IN ╘1 [$49] OR      ╘2 [$4┴] DEPENDING ON THE ┼╥─╥╬╧ [$4┼2├].
  70. $┼┴0─  ╔─╠12    ╩╙╥ ┼╥╥╠┼─ [$├055] TO FLASH THE ERROR ╠┼─.
  71. $┼┴10           ╩UMP TO ╔─╠1 [$┼992], THE TOP OF THE IDLE LOOP.
  72.